#define _CRT_SECURE_NO_WARNINGS 1
int maxDepth(struct TreeNode* root) {
    if (!root) {
        return 0;
    }
    int left = maxDepth(root->left);
    int right = maxDepth(root->right);
    return (left > right ? left : right) + 1;
}
bool isBalanced(struct TreeNode* root) {
    if (root == NULL)
        return true;
    int l = maxDepth(root->left);
    int r = maxDepth(root->right);
    int k = abs(l - r);
    if (k <= 1 && isBalanced(root->left) && isBalanced(root->right))
        return true;
    return false;
}